#include <iostream>
#include <vector>
using namespace std;
// class Solution {
// public:
//     int minSubArrayLen(int target, vector<int>& nums) {
//         int result = INT32_MAX;
//         int sum = 0;
//         int subLength = 0;
//         for(int i = 0;i < nums.size(); ++i){
//             sum = 0;
//             for(int j = i; j < nums.size(); ++j){
//                 sum += nums[j];
//                 if(sum >= target){
//                     subLength = j - i + 1;
//                     result = result < subLength ? result : subLength;
//                     break;
//                 }
//             }
//         }
//         return result == INT32_MAX ? 0 : result;
//     }
// };

// 滑动窗口
class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int result = INT32_MAX;
        int sum = 0;
        int begin = 0; // 起始位置
        int subLength = 0;
        for(int i = 0;i < nums.size(); ++i){
            sum += nums[i];
            while(sum >= target){
                subLength = i - begin + 1;
                result = result < subLength ? result : subLength;
                sum -= nums[begin++];
            }

        }
        return result == INT32_MAX ? 0 : result;
    }
};
